package gat.api.background.backgroundUser;

import java.util.List;

import com.bitsun.core.common.web.ResultDTO;

import gat.dto.req.backgroundUser.PermissionsReqDto;
import gat.dto.req.backgroundUser.UserRoleReqDto;
import gat.dto.res.backgroundUser.PermissionsResDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;

/**
 * 权限表
 * @Author: tmac
 * @Email: tmac
 */
@Api(value = "permissions", description = "权限表接口", tags = {"菜单权限"})
public interface BPermissionsApi {

    /**
     * 查询当前角色信息(树结构)
     *
     * @return 返回单独的资源对象
     */
    @ApiOperation(value = "查询当前角色信息(树结构)", tags = {"菜单权限"}, nickname = "getPermissionsByUserId")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<List<PermissionsResDto>> getPermissionsByUserId(UserRoleReqDto reqDto);

    /**
     * 查询当前角色信息
     *
     * @return 返回单独的资源对象
     */
    @ApiOperation(value = "查询当前角色信息", tags = {"菜单权限"}, nickname = "getPermissionsList")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<List<PermissionsResDto>> getPermissionsList(UserRoleReqDto reqDto);

    /**
     * 创建一个资源对象
     *
     * @return 返回新创建的资源对象
     */
    @ApiOperation(value = "创建一个资源对象（返回新创建的资源对象）", tags = {"菜单权限"}, nickname = "addPermissions")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "000000:成功，否则失败")})
    ResultDTO<PermissionsResDto> addPermissions(PermissionsReqDto reqDto);

    /**
     * 删除单个或一系列资源对象
     *
     * @param ids 用英文逗号隔开
     * @return 返回一个空文档
     */
    @ApiOperation(value = "删除单个或一系列资源对象", tags = {"菜单权限",}, nickname = "deletePermissions")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<Void> deletePermissions(String ids);

    /**
     * 查询一个资源对象
     *
     * @return 返回单独的资源对象
     */
    @ApiOperation(value = "查询一个资源对象", tags = {"菜单权限"}, nickname = "getOnePermissions")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<PermissionsResDto> getOnePermissions(Long id);

    /**
     * 更新一个资源对象(部分更新)
     *
     * @return 返回完整的资源对象
     */
    @ApiOperation(value = "更新一个资源对象(部分更新,更新对象里有值的属性,空值不更新)", tags = {"菜单权限"}, nickname = "patchUpdatePermissions")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<PermissionsResDto> patchUpdatePermissions(Long id, PermissionsReqDto reqDto);


    @ApiOperation(value = "查询所有菜单权限", tags = {"菜单权限"}, nickname = "getAllPermissionsList")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<List<PermissionsResDto>> getAllPermissionsList();

    @ApiOperation(value = "首页菜单", tags = {"菜单权限"}, nickname = "indexPermissionsList")
    @ApiResponses(value = {@ApiResponse(code = 200, message = "操作是否成功,000000:成功，否则失败")})
    ResultDTO<List<PermissionsResDto>> indexPermissionsList();

}
